var rootPath = "${pageContext.request.contextPath}";
/*
 * Ajax返回代码常量表
 */
var AjaxReturnCode = {
	/** 成功 */
	SUCCESS : "200",
	/** 操作成功，未取到数据 */
	SUCCESS_NO_DATA : "201",
	/** 资源未找到 */
	CODE_NOT_FOUND : "404",
	/** 服务器内部错误ApplicationException */
	APPLICATION_EXCEPTION : "500",
	/** 服务器内部错误SystemException */
	SYSTEM_EXCEPTION : "501",
	/** 整个页面重定向，如需要重新登录 */
	WHOLE_REDIRECT : "300",
	/** AJAX局部重定向 */
	PART_REDIRECT : "301"
}

/*
 * Ajax返回结果的对象，将Ajax返回的数据封装在AjaxReturnObj中，方便使用
 */
function AjaxReturnObj(jsonObj) {
	json = jsonObj
};
AjaxReturnObj.prototype.getJson = function() {
	return json
};
AjaxReturnObj.prototype.setMessageCode = function(code) {
	json["code"] = code
};
AjaxReturnObj.prototype.setMessage = function(msg) {
	json["message"] = msg
};
AjaxReturnObj.prototype.setContent = function(content) {
	json["item"] = content
};
AjaxReturnObj.prototype.getMessageCode = function() {
	return json["code"]
};
AjaxReturnObj.prototype.getMessage = function() {
	return json["message"]
};
AjaxReturnObj.prototype.getContent = function() {
	return json["item"]
};

/*设置全局 AJAX 默认选项*/
$.ajaxSetup({
	contentType : "application/x-www-form-urlencoded; charset=utf-8",//ajax编码转换
	traditional : true, //是否深度序列化参数对象
	cache:false, //缓存设置
	timeout: 300000,  //超时设置
	complete:function(xhr,textStatus){
		try
		{
			var ajaxRetObj=new AjaxReturnObj($.parseJSON(xhr.responseText));
			// 处理跳转
			if (ajaxRetObj.getMessageCode()==AjaxReturnCode.WHOLE_REDIRECT)
			{
				window.location.href =rootPath + ajaxRetObj.getMessage(); //跳转到相应页面(这里为登录页面)
			}
		}
		catch(err){}
	},
	error: function(xhr, textStatus, err){
		if (xhr.readyState==0)
		{
			showToast(false, "请求失败，请检查网络");
		}
		if (textStatus=="timeout")
		{
			showToast(false, "请求超时，请确认网络是否通畅");
		}
		if (textStatus=="parsererror")
		{
			showToast(false, "数据解析发生异常");
		}
	}
});

/*
 * 简易Ajax请求函数 此方法封装了jQueryAjax，可通过参数指定Ajax常用选项
 * URL是必须的，data可以为字符串也可以是一个包含键值对的对象也可以不指定
 */
function easyAjax(url, data, sucCallback, errCallback, isAsync, dataType,
		method) {
	// 判定URL是否指定
	if ((!url) || $.trim(url) == "") {
		showToast(false, "Ajax请求未指定URL");
		return;
	}

	var ajaxRetObj;
	$.ajax({
		contentType : "application/x-www-form-urlencoded; charset=UTF-8", // ajax编码转换
		traditional : true, // 是否深度序列化参数对象
		cache : false, // 缓存设置
		type : (!method) ? "POST" : method, // 如果不指定method，则默认为Post
		url : url, // 请求的URL
		data : (!data) ? {} : data, // 请求时发送的Http参数
		dataType : (!dataType) ? "json" : dataType,// 返回的数据类型，默认为json
		async : (isAsync == undefined || isAsync == null) ? true : isAsync, // 异步选项，如果未指定，则为true（异步），否则使用isAsync指的值
		success : function(data){
			if(!!sucCallback){
				sucCallback(data);
			}else{
				ajaxRetObj = new AjaxReturnObj(data);
			}
		}
	// TODO 后续增加处理错误的提示
	});

	return ajaxRetObj;
}

/*
 * 显示Toast弹层
 */
function showToast(isSuc, content, delay) {
	// 判断参数，根据参数确定显示内容和类型
	content = (!content) ? (isSuc ? "操作成功" : "操作失败") : content;
	// 生成弹层代码
	var toast = $("<div id=\"toast\" style=\"position:fixed !important; position:absolute; width: 300px; left: 50%; top: 50%; padding: 7px; margin: 0 -150px 0 -150px;\" class=\"ui-widget ui-widget-content ui-corner-all \"></div>");
	toast.addClass(isSuc ? "ui-state-highlight" : "ui-state-error");
	var icon = $("<span class=\"ui-icon\" style=\"float: left; margin-right: 3px; margin-top: 3px;\"></span>");
	icon.addClass(isSuc ? "ui-icon-info" : "ui-icon-alert");
	var msg = $("<p>" + content + "</p>");
	toast.append(icon).append(msg);
	// 显示
	$("body").append(toast.hide());
	toast.fadeIn("slow");
	// delay时间后淡出
	window.setTimeout(function() {
		toast.fadeOut("slow", function() {
			toast.remove()
		})
	}, (!delay) ? (isSuc ? 3000 : 6000) : delay);
}